import time

import MySQLdb

# 第一步：创建连接对象
from sql_week1.partial__01 import create_connect, random_pass, password_to_sha256

conn = MySQLdb.connect(host='47.104.31.138', port=3306,
                       user='root', password='Luohao.618',
                       database='hrs', charset='utf8mb4',
                       autocommit=False)
# host主机地址
try:
    # 第二部：通过链接对象获取游标对象
    start = time.time()
    with conn.cursor() as cursor:
        no = 1
        # 第三步：通过游标对象向数据库服务器发出SQL语句
        for i in range(0, 10):
            params = []
            for j in range(100):
                password = random_pass(length=8)
                password_digest = password_to_sha256(password)
                params.append((f'user{no}', password, password_digest))
                no += 1
            # 批量插入 -----> executemany
            # 第一个参数还是SQL语句,第二个参数是一个列表,
            # 列表中的元素是元组,用来保存每条SQL语句用到的参数
            cursor.executemany(
                    'insert into `tb_user`(`user_name`,`user_pass`)'
                    'values(%s, %s)',
                    params
            )

        # 第四步：通过连接对象提交事务
        conn.commit()
        end = time.time()
        print(f'执行时间:{end-start}')
except MySQLdb.MySQLError as err:
    print(err)
    # 第四步：通过连接对象回滚事务
    conn.rollback()

finally:
    # 第五步：关闭连接
    # 数据库可以链接的游标数是有限的用完了之后要及时释放连接
    conn.close()
